package com.wangshili.sys.service;

import org.apache.ibatis.annotations.Param;
import org.springframework.transaction.annotation.Transactional;

import com.github.pagehelper.PageInfo;
import com.wangshili.common.bo.PageObject;
import com.wangshili.pojo.sys.entity.SysUser;
import com.wangshili.sys.vo.SysUserDept;
import com.wangshili.sys.vo.SysUserDeptRole;

/**
 * 用户管理业务接口层
 * @author wangshili
 *
 */
public interface SysUserService {
	/**
	 * 查询统计符合该名字的行数
	 * @param name 输入用户名字，模糊查询
	 * @return
	 */
	int intRowCount(String name);
	
	/**
	 * 
	 * @param username 用户名称
	 * @param pageCurren 当前页码
	 * @return
	 */
	PageInfo<SysUserDept> listPageObject(
			String username,
            Integer pageCurrent);
	
	
	/**
	 * 根据id更新禁用状态
	 * @param id user的id
	 * @param valid 状态
	 * @param modifiedUser 修改人
	 * @return
	 */
	int updateValidById(
			Integer id,
			Integer valid,
			String modifiedUser
			);
	
	/**
	 * 插入一条用户信息，并插入关系表
	 * @param entity 用户信息
	 * @param roleIds 对应的多个角色信息
	 * @return
	 */
	@Transactional
	int saveObject(SysUser entity,Integer[]roleIds);
	
	/**
	 * 根据id查询 一条用户信息,包括部门信息，角色信息
	 * @param id 
	 * @return
	 */
	SysUserDeptRole selectUserDeptRole(Integer id);
	
	/**
	 * 更新用户信息，再根据用户id删除对应的角色信息，再插入客户端传过来的新角色
	 * 信息
	 * @param entity 用户信息
	 * @param userId 用户id
	 * @return
	 */
	@Transactional //开启事务
	int updateUserAndRole(SysUser entity,Integer... roleIds);
	
	/**
	 * 更新密码
	 * @param password 原密码
	 * @param newPassword 新密码
	 * @param cfgPassword 再次输入的新密码
	 * @return
	 */
    int updatePassword(String password,
            String newPassword,
            String cfgPassword);
}
